package gang.org.springframework.framework.support;

import gang.org.springframework.framework.bean.GangRootBeanDefinition;
import gang.org.springframework.framework.factory.GangBeanFactory;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public interface GangInstantiationStrategy {

    Object instantiate(GangRootBeanDefinition md, String beanName, GangBeanFactory owner);

    Object instantiate(GangRootBeanDefinition md, String beanName, GangBeanFactory owner, Object factoryBean, Method factoryMethod, Object... args);

    Object instantiate(GangRootBeanDefinition md, String beanName, GangBeanFactory owner, Constructor<?> ctor, Object... args);
}
